In a distributed computer network comprising a system of interconnected compuer nodes, information comprising commands, responses and data must be transmitted between two or more nodes and combinations of nodes in order to allow the various components of the system to interact.
Since the terminology involved in describing such a network is not fully formalized in the industry, it should be understood that as used herein, the following terms have the indicated meanings, unless it appears otherwise from the context in which used:
A "port", also called an "interface" or "adapter", is the mechanism through which a (host) computer or other device gains access to a bus for communicating with other computers and devices. A port includes a port processor, port buffer, and link components; the roles of these components is explained below.
A "node" comprises a host computer and at least one port; a node may also have or use multiple ports and these ports may also communicate with each other over the bus.
A "bus" is an interconnection between devices through which information may be transferred from one device to another; it includes a communication channel and associated components and control.
A "network" is a system of nodes interconnected via a common bus.
The mechanism employed for transferring information from one node to another (and from one port to another) significantly affects both the communications efficiency and the processing efficiency of the network. In the past, with rare exceptions, computer interconnection schemes have been designed either (1) to be mere communications channels or (2) to take into account the specific characteristics of specific models of equipment. However, with the proliferation of manufacturers and models of computer equipment, the need has existed for some time for an efficient, cross-product compatible, general purpose computer intercomputer communications link which is more than just a communications channel but is also more broadly useful than a product-specific bus. This need has become all the more acute with the advent of (1) so-called "intelligent" input/output systems which have significant computing capability of their own, (2) high availability systems structured as networks of closely coupled computers, each with its own independent memory and operating system and (3) load-sharing distributed processing systems where a number of tightly-coupled computers share a common resource, such as a file system.
The design of the message communications system for a multi-node network is highly dependent upon the kind of bus employed as the electrical interconnection. Such networks differ from each other qualitatively, and are characterized, by the way in which bus access is obtained and the way in which messages are directed from one point to another. This includes the method by which a message destination is indicated and recognized, the way message-handling tasks are controlled and the types of reliability enhancing and error-detecting and error correcting features employed. As a result of different design approaches, the operational sequence of steps necessary for accomplishing a message transfer may differ markedly from one network to another.
Computer networks broadly may be categorized as either tightly-coupled or loosely-coupled. Loosely-coupled networks are also called "distributed" networks or systems. In tightly-coupled networks there is generally one memory which is shared by different devices, such as processors, input/output devices, etc., and all are in close physical proximity. These different devices use the memory as a mailbox through which information can be exchanged, one device putting a message into the mailbox and another device taking it out. A memory bus interconnects the memory with the other devices. By contrast, in loosely-coupled networks, nodes containing the devices and subsystems mentioned above are usually separated by greater distances and cannot efficiently utilize a common memory bus. Therefore, the interconnection between nodes of such a network is often some sort of communications bus which simply acts as a communications channel. Distributed networks thus usually have different operating modes than tightly-coupled networks and require a greater number of steps to effect a transfer from one node to another. Also, a transmitting node normally has no knowledge of where in its memory a receiving node puts a particular message.
One form of communications bus, which also is the type used herein, is referred to as a contentionarbitrated bit-serial bus.
Other common drawbacks of prior art systems are (1) that sometimes only undirectional transfers are supported--i.e., only write operations, but not read operations--since memory of one node is not directly accessible from another; (2) messages may be lost at times; (3) long transfers may monopolize the bus for an unfairly long time; and (4) processor interruption is needed to signal completion of a transfer. Indeed, multiple interruptions of a host processor may be needed, sometimes as often as once per packet sent over the bus; and with each interrupt, the process or is diverted from other work and that other work is delayed.
Accordingly, it is an object of this invention to provide an efficient, cross-product compatible, general purpose intercomputer communications link for computer networks.
It is a further object of this invention to provide a message transfer system for distributed computer networks which closely simulates the performance of a tightly-coupled network.
It is another object of this invention to provide such a message transfer system wherein a transmitting node (and port) knows, at least symbolically, the location in the receiving node's (and port's) memory to which each message is sent.
It is also an object of the present invention to provide a new method and apparatus for message transfer between the nodes of a multi-node network using a contention-arbitrated bit-serial bus, with provision for insuring high reliability of information transfers.
It is a further object of this invention to provide such a network and apparatus in which message transfer is guaranteed to be non-duplicated, loss-free and error-free.
Yet another object of such invention is to provide a bi-directional interconnection capable of supporting both read and write operations between nodes of a multi-node network.
Still another object of this invention is to provide a non-atomic transfer service wherein a single transfer may be broken into blocks to prevent bus latency build up, so that long transfers do not block a port from start to finish of the transfer.
A further object of the invention is to support prioritizing of both read and write operations by the initiating node.
An additional object of the invention is to provide for general addressing of buffers in destination nodes, eliminating the need for the transfer-originating node to know in detail the memory addressing structure of the destination node.
A still further object of the invention is to provide a transfer apparatus and method in which the required number of host interventions or interrupts, is minimized (i.e., substantially reduced)